home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d6
/
glazer.arc
/
DATESINM.BAS
< prev
next >
Wrap
BASIC Source File
|
1988-10-07
|
2KB
|
65 lines
100 'Dates in Month ("DATESINMONTH")
110 CLS
120 COLOR 0,15 : PRINT "Dates in Month" : COLOR 15,0
130 PRINT
140 ' Get names of months
150 DIM MONTHNAMES$ (12)
160 FOR N = 1 TO 12
170 READ MONTHNAMES$ (N)
180 NEXT N
190 DATA January, February, March, April, May, June
200 DATA July, August, September, October, November, December
210 ' Get names of days
220 DIM DAYNAMES$ (7)
230 FOR N = 0 TO 7
240 READ DAYNAMES$ (N)
250 NEXT N
260 DATA Saturday, Sunday, Monday, Tuesday
270 DATA Wednesday, Thursday, Friday, End
280 ' Get words 1st through 5th
290 DIM ORDINALS$ (5)
300 FOR N = 1 TO 5
310 READ ORDINALS$ (N)
320 NEXT N
330 DATA 1st, 2nd, 3rd, 4th, 5th
340 ' Get number of days in months
350 DIM NDAYS (12)
360 FOR N = 1 TO 12
370 READ NDAYS (N)
380 NEXT N
390 DATA 31, 28, 31, 30
400 DATA 31, 30, 31, 31
410 DATA 30, 31, 30, 31
420 ' Let user enter date
430 INPUT "Day of week: ", DAY$
440 'Find number of day
450 IF LEFT$ (DAY$, 1) > "Z" THEN MID$(DAY$, 1) = CHR$ (ASC (LEFT$ (DAY$, 1) ) - 32)
460 DAY = 0
470 WHILE (DAY <= 6) AND (LEFT$ (DAYNAMES$ (DAY), 2) <> LEFT$ (DAY$, 2) )
480 DAY = DAY + 1
490 WEND
500 IF DAY = 7 THEN GOTO 430 'Invalid day
510 INPUT "Month (1-12): ",MONTH
520 IF MONTH < 1 OR MONTH > 13 THEN PRINT "** No such month **" : GOTO 510
530 INPUT "Year: ", YEAR
540 ' Make February 29 days long in leap years
550 IF (YEAR MOD 4) = 0 AND (YEAR MOD 100) <> 0 THEN NDAYS(2) = 29
560 IF (YEAR MOD 400) = 0 THEN NDAYS(2) = 29
570 ' Find day for first of month
580 FACTOR = 365 * YEAR + 31 * (MONTH - 1) + 1
590 'January or February
600 IF MONTH <= 2 THEN FACTOR = FACTOR + (YEAR - 1) \ 4 - INT (3/4 * ( (YEAR - 1) \ 100 + 1 ) )
610 'March or later
620 IF MONTH >= 3 THEN FACTOR = FACTOR - INT (.4 * MONTH + 2.3) + YEAR \ 4 - INT (3/4 * (YEAR \ 100 + 1) )
630 FACTOR = FACTOR - INT (FACTOR / 7) * 7
640 IF DAY >= FACTOR THEN DATE = DAY + 1 - FACTOR ELSE DATE = DAY + 8 - FACTOR
650 ' Print the dates
660 PRINT
670 N = 1
680 WHILE DATE <= NDAYS (MONTH)
690 PRINT ORDINALS$(N); SPC(2); DAYNAMES$(DAY); DATE; MONTHNAMES$ (MONTH)
700 N = N + 1
710 DATE = DATE + 7
720 WEND
730 END